#ifndef MATRIX4X4_H_
#define MATRIX4X4_H_

#include <cmath>
#include "Matrix.h"
#include "Point.h"

class Matrix4x4 : public Matrix<4>
{
	public:
		Matrix4x4();
		Matrix4x4(const Matrix4x4& copy);
		virtual ~Matrix4x4();
		
		Matrix4x4& scale(const float sx, const float sy, const float sz);
		Matrix4x4& rotateX(const float alpha);
		Matrix4x4& rotateY(const float alpha);
		Matrix4x4& rotateZ(const float alpha);
		Matrix4x4& translate (const float tx, const float ty, const float tz);
		void transformPoint(const SPoint& in, SPoint& out) const;
		
		static void test(void); // debug only
};

#endif /*MATRIX4X4_H_*/
